<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
<script>
    /*
    * 数学对象：
    *   有哪些数学计算的函数，需要知道
    *
    *   Math 对象
    *       几个常数：
    *       PI：通过PI计算 圆的面积体积，比例关系  Math.PI
    *       计算圆的面积：
    *       function area(r){
    *           return Math.PI * r * r
    *       }
    *
    *       E：自然常数 Math.E
    *
    *       常见的Math方法：随机数是重点
    *       数值取整的方法：
    *       1.floor方法：将一个数向下取整，不超过该数的最大整数
    *       Math.floor(3.1) //打印3
    *       Math.floor(-3.1) //打印-4
    *
    *       2.ceil方法：将一个数向上取整，不小于该数的最小整数
    *       Math.ceil(3.1) //打印4
    *       等价于Math.floor() + 1
    *
    *       3.round方法：就近原则，四舍五入
    *       Math.round(3.11) //打印3
    *       Math.round(3.6) //打印4
    *       Math.round(-3.5) //打印-3
    *
    *       4.trunc方法：直接舍去小数部分
    *       Math.trunc(3.5) //3
    *       math.trunc(-3.5) //-3
    *
    *       绝对值的方法：
    *       5.abs方法：一个数取绝对值，正数和0不变，负数 * -1
    *
    *       比较的方法：
    *       6.max方法：一组数中找出最大值 Math.max(1,2,5,8,4,6,3,0) //8
    *       7.min方法：一组数中找出最小值 Math.min(1,8,0,6,7,9,4) //0
    *
    *       运算的方法：
    *       8.pow：算指数，接收两个参数，第一个是底数a，第二个是指数b
    *       Math.pow(2,10) //2的10次方 1024
    *       相当于 2 ** 10 //1024
    *
    *       随机数：非常有用非常好用
    *       9.Math.random():每次执行结果，都会返回一个0到1之间的随机数，可以近似认为是完全随机(实则是伪随机数)
    *           范围：(0,1) 介于0到1之间
    *           随机一个0到10之间的随机数：Math.random() * 10
    *           随机一个0到100之间的随机数：Math.random() * 100
    *       0 - a之间的随机数 Math.random() * a
    *       a - b之间的随机数，默认假设b大于a：(b-a) * Math.random() + a
    *
    *       作业：a - b之间的随机整数（a和b可能是小数，a和b的位置可能不一样，a和b中间可能没有整数）
    *
    *       用随机数模拟丢硬币：
    *       function coin(){
    *           //1/2
    *           if(Math.random() < 0.5){
    *               return true
    *           }else{
    *               return false
    *           }
    *       }//这段代码可以优化成以下代码
    *       function coin(){
    *           return Math.random() < 0.5
    *       }
    *
    *       用随机数模拟丢骰子：1 2 3 4 5 6
    *       function shaiZi(){
    *           return Math.ceil(Math.random() * 6) //随机数是0到1之间，*6就是0到6之间，然后用向上取整的方式，就是1到6之间的随机整数
    *       }
    *       //能不能验算？
    *       let result = {
    *           1:0,
    *           2:0,
    *           3:0,
    *           4:0,
    *           5:0,
    *           6:0
    *       }
    *       for(let i = 0;i < 100000;i++){
    *           result[shaiZi()]++ //如果投到1,1的次数加一，如果投到6,6的次数加一
    *       }
    *       console.log(result)
    *
    *       抽奖问题：六星卡片2% 五星卡片8% 四星卡片40% 三星卡片50%
    *       //按照上述的概率输出
    *       function chou(){
    *           let result = Math.random()
    *           if(result < 0.02){
    *               return "六星卡"
    *           }
    *           if(result < 0.10){
    *               return "五星卡"
    *           }
    *           if(result < 0.50){
    *               return "四星卡"
    *           }
    *           return "三星卡"
    *       }
    *
    *       let result = {
    *           六星卡:0,
    *           五星卡:0,
    *           四星卡:0,
    *           三星卡:0
    *       }
    *
    *       for(let i = 0;i < 100;i++){
    *           return[chou()]++
    *       }
    *
    * */

    //作业：
    //1.getNum 传入两个数 返回两个数之间的随机整数
    function getNum(num1,num2){
        //判断边界
        if(!isFinite(num1) || !isFinite(num2)){ //如果num1不是有限的数值或者num2不是有限的数值
            return NaN
        }
        let min = Math.ceil(Math.min(num1,num2))
        let max = Math.floor(Math.max(num1,num2))
        //情况一：最大值和最小值是同一个数
        if(max === min){
            return max
        }
        //情况二：max > min
        //确定随机范围，例如2到5之间有2 3 4 5四个整数 是不是等于5-2+1个整数
        //确定随机范围(max - min + 1)
        let range = max - min + 1
        //范围随机数，可以是小数
        let randomNum = range * Math.random()
        //取整，调整位置
        //return Math.floor((max - min + 1) * Math.random()) + min 就可以写成下面这个
        return  Math.floor(randomNum) + min

    }

</script>
</body>
</html>